@@ -15,7 +15,7 @@ from logit import logit  | 
            ||
| 15 | 15 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 16 | 16 | 
                 | 
            
| 17 | 17 | 
                from account.models import LensmanInfo, UserIncomeExpensesInfo, UserInfo  | 
            
| 18 | 
                -from group.models import GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo, GroupUserInfo  | 
            |
| 18 | 
                +from group.models import GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo  | 
            |
| 19 | 19 | 
                from message.models import SystemMessageInfo  | 
            
| 20 | 20 | 
                from pay.models import OrderInfo  | 
            
| 21 | 21 | 
                from photo.models import PhotosInfo  | 
            
                @@ -23,8 +23,9 @@ from utils.error.errno_utils import LensmanStatusCode, OrderStatusCode, UserStat  | 
            ||
| 23 | 23 | 
                from utils.error.response_utils import response  | 
            
| 24 | 24 | 
                from utils.message_utils import system_messages  | 
            
| 25 | 25 | 
                from utils.page_utils import pagination  | 
            
| 26 | 
                -from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_info, set_group_users_info  | 
            |
| 27 | 
                -from utils.redis.rkeys import GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, WEEK_INCOME, WEEK_SOLD  | 
            |
| 26 | 
                +from utils.redis.rgroup import get_group_info, set_group_info  | 
            |
| 27 | 
                +from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, TODAY_INCOME, TODAY_UPLOAD_PHOTO_AMOUNT, TOTAL_INCOME, WEEK_INCOME,  | 
            |
| 28 | 
                + WEEK_SOLD)  | 
            |
| 28 | 29 | 
                from utils.redis.rorder import set_lensman_order_record  | 
            
| 29 | 30 | 
                from utils.redis.rprice import get_lensman_price_fixed, set_lensman_price_fixed  | 
            
| 30 | 31 | 
                from utils.thumbnail_utils import make_thumbnail  | 
            
                @@ -299,28 +300,63 @@ def lensman_origin_photo_upload_api(request):  | 
            ||
| 299 | 300 | 
                except OrderInfo.DoesNotExist:  | 
            
| 300 | 301 | 
                return response(OrderStatusCode.WX_ORDER_NOT_FOUND)  | 
            
| 301 | 302 | 
                 | 
            
| 302 | 
                - from_uid = order.from_uid  | 
            |
| 303 | 303 | 
                # 原图已删除, 处理退款逻辑  | 
            
| 304 | 304 | 
                if deleted:  | 
            
| 305 | 
                + # 用户增加余额  | 
            |
| 305 | 306 | 
                try:  | 
            
| 306 | 
                - user = UserInfo.objects.get(uid=from_uid)  | 
            |
| 307 | 
                + from_user = UserInfo.objects.select_for_update().get(user_id=order.from_uid)  | 
            |
| 307 | 308 | 
                except UserInfo.DoesNotExist:  | 
            
| 308 | 309 | 
                pass  | 
            
| 309 | 310 | 
                 | 
            
| 310 | 
                - if user:  | 
            |
| 311 | 
                + if from_user:  | 
            |
| 311 | 312 | 
                # 增加余额  | 
            
| 312 | 
                - user.balance += order.total_fee  | 
            |
| 313 | 
                - user.save()  | 
            |
| 313 | 
                + from_user.balance += order.total_fee  | 
            |
| 314 | 
                + from_user.save()  | 
            |
| 314 | 315 | 
                # 余额记录  | 
            
| 315 | 316 | 
                UserIncomeExpensesInfo.objects.create(  | 
            
| 316 | 
                - user_id=from_uid,  | 
            |
| 317 | 
                + user_id=order.from_uid,  | 
            |
| 317 | 318 | 
                photo_id=order.photo_id,  | 
            
| 318 | 319 | 
                type=UserIncomeExpensesInfo.INCOME,  | 
            
| 319 | 320 | 
                amount=order.total_fee,  | 
            
| 320 | 
                - balance=user.balance,  | 
            |
| 321 | 
                + balance=from_user.balance,  | 
            |
| 321 | 322 | 
                remark=u'高清图购买退款',  | 
            
| 322 | 323 | 
                )  | 
            
| 323 | 324 | 
                 | 
            
| 325 | 
                + # 摄影师减少余额  | 
            |
| 326 | 
                + try:  | 
            |
| 327 | 
                + to_user = UserInfo.objects.select_for_update().get(user_id=order.to_uid)  | 
            |
| 328 | 
                + except UserInfo.DoesNotExist:  | 
            |
| 329 | 
                + pass  | 
            |
| 330 | 
                +  | 
            |
| 331 | 
                + if to_user:  | 
            |
| 332 | 
                + # 减少余额  | 
            |
| 333 | 
                + to_user.balance -= order.total_fee  | 
            |
| 334 | 
                + to_user.save()  | 
            |
| 335 | 
                + # 余额记录  | 
            |
| 336 | 
                + UserIncomeExpensesInfo.objects.create(  | 
            |
| 337 | 
                + user_id=order.to_uid,  | 
            |
| 338 | 
                + photo_id=order.photo_id,  | 
            |
| 339 | 
                + type=UserIncomeExpensesInfo.EXPENSE,  | 
            |
| 340 | 
                + amount=order.total_fee,  | 
            |
| 341 | 
                + balance=to_user.balance,  | 
            |
| 342 | 
                + remark=u'高清图购买退款',  | 
            |
| 343 | 
                + )  | 
            |
| 344 | 
                +  | 
            |
| 345 | 
                + # Redis 数值更新  | 
            |
| 346 | 
                + ymd = tc.local_string(tc.to_local_datetime(order.created_at), format='%Y%m%d')  | 
            |
| 347 | 
                + week = Week.withdate(order.created_at)  | 
            |
| 348 | 
                +  | 
            |
| 349 | 
                + # 总收入  | 
            |
| 350 | 
                + r.decr_limit(TOTAL_INCOME % (order.to_uid, order.photo_type), order.total_fee, limit=0)  | 
            |
| 351 | 
                + # 周收入  | 
            |
| 352 | 
                + r.decr_limit(WEEK_INCOME % (order.to_uid, order.photo_type, week), order.total_fee, limit=0)  | 
            |
| 353 | 
                + # 日收入  | 
            |
| 354 | 
                + r.decr_limit(TODAY_INCOME % (order.to_uid, order.photo_type, ymd), order.total_fee, limit=0)  | 
            |
| 355 | 
                +  | 
            |
| 356 | 
                + # 周售出  | 
            |
| 357 | 
                + r.decr_limit(WEEK_SOLD % (order.to_uid, order.photo_type, week), limit=0)  | 
            |
| 358 | 
                +  | 
            |
| 359 | 
                + # 更新订单状态  | 
            |
| 324 | 360 | 
                order.photo_status = OrderInfo.DELETED  | 
            
| 325 | 361 | 
                order.reback_status = True  | 
            
| 326 | 362 | 
                order.reback_at = tc.utc_datetime()  | 
            
                @@ -348,7 +384,7 @@ def lensman_origin_photo_upload_api(request):  | 
            ||
| 348 | 384 | 
                porder, created = GroupPhotoOrderInfo.objects.get_or_create(  | 
            
| 349 | 385 | 
                group_id=order.group_id,  | 
            
| 350 | 386 | 
                session_id=session_id,  | 
            
| 351 | 
                - user_id=from_uid,  | 
            |
| 387 | 
                + user_id=order.from_uid,  | 
            |
| 352 | 388 | 
                photo_id=order.photo_id,  | 
            
| 353 | 389 | 
                lensman_photo_id=photo_id,  | 
            
| 354 | 390 | 
                )  | 
            
                @@ -377,7 +413,7 @@ def lensman_brief_api(request):  | 
            ||
| 377 | 413 | 
                # 日上传  | 
            
| 378 | 414 | 
                today_upload = int(r.get(TODAY_UPLOAD_PHOTO_AMOUNT % (user_id, ymd)) or 0)  | 
            
| 379 | 415 | 
                # 周售出  | 
            
| 380 | 
                - week_sold = int(r.get(WEEK_SOLD % (OrderInfo.ORIGIN, user_id, ymd)) or 0)  | 
            |
| 416 | 
                + week_sold = int(r.get(WEEK_SOLD % (user_id, OrderInfo.ORIGIN, ymd)) or 0)  | 
            |
| 381 | 417 | 
                 | 
            
| 382 | 418 | 
                # 摄影师端系统消息  | 
            
| 383 | 419 | 
                systems = system_messages(user_id, SystemMessageInfo.PAIAI_LENSMAN)  | 
            
                @@ -138,8 +138,8 @@ def order_paid_success(order):  | 
            ||
| 138 | 138 | 
                total_fee = order.total_fee  | 
            
| 139 | 139 | 
                 | 
            
| 140 | 140 | 
                try:  | 
            
| 141 | 
                - user = UserInfo.objects.select_for_update().filter(user_id=to_uid)[0]  | 
            |
| 142 | 
                - except IndexError:  | 
            |
| 141 | 
                + user = UserInfo.objects.select_for_update().get(user_id=to_uid)  | 
            |
| 142 | 
                + except UserInfo.DoesNotExist:  | 
            |
| 143 | 143 | 
                return  | 
            
| 144 | 144 | 
                 | 
            
| 145 | 145 | 
                user.balance += order.total_fee  | 
            
                @@ -156,7 +156,7 @@ def order_paid_success(order):  | 
            ||
| 156 | 156 | 
                r.incr(TODAY_INCOME % (to_uid, order.photo_type, ymd), total_fee)  | 
            
| 157 | 157 | 
                 | 
            
| 158 | 158 | 
                # 周售出  | 
            
| 159 | 
                - r.incr(WEEK_SOLD % (order.photo_type, to_uid, week))  | 
            |
| 159 | 
                + r.incr(WEEK_SOLD % (to_uid, order.photo_type, week))  | 
            |
| 160 | 160 | 
                 | 
            
| 161 | 161 | 
                UserIncomeExpensesInfo.objects.create(  | 
            
| 162 | 162 | 
                user_id=to_uid,  | 
            
                @@ -38,7 +38,7 @@ TODAY_INCOME = 'today:income:%s:%s:%s' # STRING,日收入,user_id、photo_t  | 
            ||
| 38 | 38 | 
                # 上传  | 
            
| 39 | 39 | 
                TODAY_UPLOAD_PHOTO_AMOUNT = 'today:upload:photo:amount:%s:%s' # STRING,日上传照片数量,user_id、tc.local_string(format='%Y%m%d')  | 
            
| 40 | 40 | 
                # 售出  | 
            
| 41 | 
                -WEEK_SOLD = 'week:sold:%s:%s:%s' # STRING,周售出,photo_type、user_id、Week.thisweek().isoformat()  | 
            |
| 41 | 
                +WEEK_SOLD = 'week:sold:%s:%s:%s' # STRING,周售出,user_id、photo_type、Week.thisweek().isoformat()  | 
            |
| 42 | 42 | 
                 | 
            
| 43 | 43 | 
                # 摄影师定价相关  | 
            
| 44 | 44 | 
                LENSMAN_PHOTO_PRICE_FIXED = 'lensman:photo:price:fixed:%s' # STRING,摄影师照片定价(单位:分),user_id  |